<?php
/****************************************************************
** Application : Nova
**
** Les buts de cet application sont de fournir un outils de partage
** de l'information pour le site membre "nova"
**
** Les auteurs :
** 		Design Web 			: Serge Peter
** 		Developpement PHP 	: Serge Peter
** 		Etudes 				: Sandrine Guihenneuc
**		Feuille de style	: Sandrine Guihenneuc
** Fichier CalFunction.php :
** 		Ce fichier regroupe les functions generalistes du site
**
*****************************************************************/

/**
* @function include_nova_css
*
* @deal inclusion de la feuille de style
*
*/
function include_nova_css()
{
	echo GLOBAL_HEADER_JS_CSS;
}

/**
* @function deb_echo
*
* @deal Fait un echo seulement en dev si on est en mode debug
*
* @param  string  $msg         	message
*/
function deb_echo($msg)
{
	if ( MY_DEBUG_MODE == 1 )
	{
		echo "= DEBUG : " . $msg . " =<br/>" ;
	}
}

/**
* @function init_session
*
* @deal initialize all session variables needed
*
*/
function init_session()
{
	/* reset to default */
	$_SESSION['form_mode'] = "default";

	/* mode par defaut si non connecte */
	if (!isset($_SESSION['mode'])) {

	    /* les vairables par default */
	    $_SESSION['username'] =DEFAULT_USER;
	    $_SESSION['user_id'] ="0";
	    $_SESSION['password'] =DEFAULT_PASS;
	    $_SESSION['utilisateur_type_cd'] =DEFAULT_USER_TYPE_CODE;
	    $_SESSION['utilisateur_type_id'] ="0";
	    $_SESSION['ponderation'] ="0";
	}
}

/**
* @function form_display
*
* @deal affichage d'une formulaire PEAR + style CSS
*
* @param  object  $form        	Instance d'un formulaire PEAR
* @param  string  $legend  		Legende
* @param  string  $style  		Sytle CSS a appliquer
* @param  string  $width  		Largeur en %
*/
function form_display($loc_form, $legend, $style, $width = "100%")
{
	?>
	<div class="<?php echo $style; ?>">
	<fieldset>
	<legend><?php echo $legend;?></legend>
	<?php
	$loc_form->display();
	?>
	</fieldset>
	</div>
	<?php
}

/**
* @function table_display
*
* @deal affichage d'une table PEAR + style CSS
*
* @param  object  $table        	Instance d'une table PEAR
* @param  string  $legend  		Legende
* @param  string  $style  		Sytle CSS a appliquer
* @param  string  $width  		Largeur en %
*/
function table_display($loc_table, $legend, $style, $width = "100%")
{
	?>
	<div class="<?php echo $style; ?>">
	<center>
	<fieldset style="width:<?php echo $width; ?>">
	<legend><?php echo $legend;?></legend>
	<?php
	$loc_table->display();
	?>
	</fieldset>
	</center>
	</div>
	<?php
}

function init_table_display($legend, $style, $width = "100%")
{
	?>
	<div class="<?php echo $style; ?>">
	<center>
	<fieldset style="width:<?php echo $width; ?>">
	<legend><?php echo $legend;?></legend>
	<?php
}

function end_table_display()
{
	?>
	</fieldset>
	</center>
	</div>
	<?php
}


/**
* @function init_menu
*
* @deal initialise le menu principal
*
* @param  string  $pdb         	instance base de donnees
*/
function init_menu($pdb)
{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

	<head>
	<title><?php echo GLOBAL_TITLE ;?></title>
	<?php
	/*
	** Include de la feuille de style
	*/
	echo GLOBAL_HEADER_JS_CSS;
	echo GLOBAL_URL_LIB;

	?>
		
		</head>
		<body>
		<div class="content">
			<div class="preheader">
				<div class="padding">
					
					
					<?php echo GLOBAL_PLAY; ?>
					<?php echo URL_ABOUT; ?>
					<?php echo URL_CONTACT; ?>
				</div>
			</div>
			<div class="header" align="center">
			<?php /* mode par defaut si non connecte */
			if ($_SESSION['ponderation'] >= MIN_VIEW_PONDER) { ?>
				<?php echo GLOBAL_HEADER ;?>
			</div>
			
			<?php /* on cherche les services lies au type d'utilisateur afin de creer un menu. */
			$sql = 'select distinct se.id, se.nom, se.chemin_url, se.url_label, se.url_target
					from ' . TB . 'services se, ' . TB . 'matrice_utilisateurs_services ma, ' . TB . 'utilisateur_types ut
					where se.id = ma.service_id
					and ut.id = ma.utilisateur_type_id
					and (ma.utilisateur_type_id = ' . $_SESSION['utilisateur_type_id'] . '
						 or ut.nom = "visiteur")
					order by se.ordre';
		
			$res = $pdb->query($sql);
		
			// check des erreurs DB
			if ( DB::isError( $res = $pdb->query( $sql ) ) ) {
				echo MSG_DB_CONNECTION_ERR . '<br/><br/>';
			}else{
		?>			
		<div id="nav">
		<ul>
		<?php
		// on regarde s'il y a plus d'une ligne (c'est les services)
		if ($res->numRows() != 0){
			while ($row = $res->fetchRow(DB_FETCHMODE_ORDERED)) {
				?>
					<li><a href="<?php echo INDEX_FORM . "?id=" . $row[0]; ?>"><?php echo  $row[3]; ?></a></li>
				<?php 
				}
			}}
			?>
			<li><a href="<?php echo $self . '?action=1000' ?>" ><?php echo LBL_LOGIN;?></a></li>
			<li><a href="<?php echo $self . '?action=1001' ?>"><?php echo LBL_DECON;?></a></li>
		</ul>
		</div> <!-- End nav -->
	<?php } // check si connecte 
}

/**
* @function init_content
*
* @deal intilise la partie content
*
*/
function init_content()
{
?>
	<div class="main_content">
		<div class="sd_left">
			<div class="text_padding">
			<br />
<?php
}

/*
** Function : treate_content
**
** Deal : treate the content of the application
**
** Params : database connection, based form name, service_id
*/

/**
* @function treate_content
*
* @deal fonction principalge de traitement du contenu
*
* @param  tab     $pdb         	  Instance base de donnees
* @param  string  INDEX_FORM     Fichier d'index
* @param  string  $service_id  	  Id du service
* @param  string  $sub_id		  Id d'un element (record par exemple)
*/
function treate_content($pdb,  $service_id, $sub_id)
{

			/* on cherche les services lies au type d'utilisateur afin de creer un menu. */
			$sql = 'select se.id, se.nom, se.chemin_url, se.url_label, se.url_target, action, info_id, info_cible
					from ' . TB . 'services se
					where se.id = ' . $service_id ;
		
			$res = $pdb->query($sql);
		
			// check des erreurs DB
			// on regarde s'il y a plus d'une ligne (c'est les services)
		
			if ($res->numRows() != 0){
			$row = $res->fetchRow(DB_FETCHMODE_ORDERED);
		
				if ($row[2] == "admin")
				{
					show_admin($pdb,  $service_id, $sub_id);
				}else if ($row[2] == "agenda")
				{
						print_cal($pdb,  $service_id);
				}else if ($row[2] == "contact")
				{
						treate_contacts($pdb,  $service_id);
				} else if ($row[2] != "" ) {
				
						if ( $row[6] = 24 ) {
							// inclusion
							
						}else{
							$url_back=$row[2];
							go_back($url_back, LBL_OUV_COURS ,1);
						}
					}else{
						print_info($pdb,  $service_id,$row[5],$row[6],$row[7]);
				}
			}
}

/**
* @function end_content
*
* @deal fin de la partie content
*
*/
function end_content()
{
	?>
				</div> <!-- End text padding -->
			</div> <!-- End sd left -->
		</div> <!-- End maincontent -->
		<div  class="footer">
		<br /><br /><br />
		<?php
			echo GLOBAL_FOOTER;
		?>
		</div><!-- End footer -->
	</div><!-- End content -->
	</body>
	</html>
	<?php
	
}

/**
* @function deconnect
*
* @deal fin de la sesssion
*
* @param  string  $pindex_form  Fichier d'index
*/
function deconnect()
{
	//session_start();
	session_unset();      // supprime toutes les variables de session
	session_destroy();    // deux precautions valent mieux qu'une

	go_back(INDEX_FORM, MSG_BYE,1);
}

/**
* @function read_char_from_db
*
* @deal transform un champ vide en character estpace
*
* @param  string  $db_char      Chaine de charactere
*/
function read_char_from_db($db_char)
{
	/* traite les enregistrements vide */
	if ( $db_char == "" ) {
		$char_to_treate = " ";
	}else{
		$char_to_treate = $db_char;
	}

	echo $char_to_treate;
}

/**
* @function print_err_right_on_page
*
* @deal print un message d'erreur sur droits
*
* @param  string  INDEX_FORM   Page d'index
*/
function print_err_right_on_page()
{
	echo "<meta http-equiv=\"refresh\" content=\"3; url=" . INDEX_FORM ."\">";
	echo MSG_NO_RIGTHS_ON_THIS_PAGE;
}

/**
* @function go_back
*
* @deal rediction automatique
*
* @param  string  $url_back     Url de retour
* @param  string  $msgtxt       Message
* @param  string  $wait_second  Attente avant redirection
*/
function go_back ($url_back, $msgtxt, $wait_second)
{
	echo "<p>";
	echo "<meta http-equiv=\"refresh\" content=\"" . $wait_second . "; url=" . $url_back . "\">";
	echo "</p>";
	deb_echo ("GO BACK URL:" . $url_back);
	echo $msgtxt . "<br/>";
}

/**
* @function del_record_and_go_back
*
* @deal efface un recode et print une quittance
*       ou un message d'erreur
*
* @param  string  $db        		Variable db
* @param  string  $inder_form       Fichier index du site
* @param  string  $service_id       Id du service appelant
* @param  string  $table_name       Table
* @param  string  $id       		Id du record
* @param  string  $url_back	       	Url de retour
*/
function del_record_and_go_back($db,  $service_id, $table_name, $id, $url_back)
{
	/* definir la query */
    $sql = 'delete from ' . $table_name .'
		    where id = ' . $id ;

    /* lancer la query */
    $res = $db->query($sql);

    /* test des erreurs */
    if ( DB::isError( $res = $db->query( $sql ) ) ) {
    	echo MSG_DB_ERR . DB::errorMessage($res).  '<br/>';
    }else{
        /* tout s'est bien passe */
		go_back ($url_back,MSG_DEL_RECORD, 1);
    }
}

/**
* @function print_insupd_err
*
* @deal print un message d'erreur sur un update
*
* @param  string  $msg         	message
* @param  string  $err_message  message d'erreur systeme
*/
function print_insupd_err($msg, $err_msg)
{
	echo $msg . "<br/>";
	echo $err_msg ."<br/>";
}

/**
* @function print login
*
* @deal   print un message d'erreur
*
* @param  string  $msg         message a printer
*/
function print_login_err($msg)
{
	echo $msg . "<br/>";
	echo $err_msg ."<br/>";
}

/**
* @function print_url
*
* @param  string  $url        Tag forme de  cette url
* @param  string  $label       Et de ce label
*/
function print_url($url, $label)
{
	echo "<a href=\"" . $url . "\">". $label ."</a>";
}

/**
* @function print_del_url
*
* @param  string  $url        Tag forme de  cette url
* @param  string  $label       Et de ce label
*/
function print_del_url($url, $label)
{
	?>

		<script language="javascript">
		function confirmation(url, msg)
		{
		var answer = confirm (msg)
		if (answer)
		window.location=url
		}
		</script>

	<A HREF='javascript:onClick=confirmation("<?php echo $url;  ?>", "<?php echo $label; ?>");'><img src="images/delete_obj.gif" border="0"></A>
	<?php
}


/**
* @function open_url
*
* @param  string  $url        Tag forme de  cette url
* @param  string  $label       Et de ce label
* @param  boolean  $relative   Chemin reliatif
*
*/
function open_url($url, $label, $relative = false)
{
	/* un petit traitement pour ajouter le http:// si necessaire */
	if ( strlen($url) >= 4 and $relative == false) {

		$new_url = $url;
		if (substr_count($url, "http") == 0) {
			$new_url="http://" . $url;
		}

		echo "<a href=\"" . $new_url . "\" TARGET=\"_blank\">". $label ."</a>";
	}

}

/**
* @function open_email
*
* @param  string  $email       Email a ouvrir
* @param  string  $label       Et de ce label
*/
function open_email($email, $label)
{
	echo "<a href=\"mailto:" . $email . "\">". $email ."</a>";
}

/**
* @function print_url
*
* @param  string  $url        Tag forme de  cette url
* @param  string  $label       Et de ce label
*/
function print_url_if_not_null($url, $label)
{
	if ( $label != "" ) {
		print_url($url, $label);
	}else{
		read_char_from_db($label);
	}
}

?>
